//----------------------------------------------------------------------------------
// CInput class
// Author: Enric Vergara
//
// Description:
// Clase Input del juego arkanoid
//----------------------------------------------------------------------------------
#pragma once
#ifndef INC_INPUT_H_
#define INC_INPUT_H_

#include <string>

//---Engine Includes----
typedef enum INPUT_TYPE
{
	INPUT_TYPE_KEYBOARD,
	INPUT_TYPE_MOUSE,
	INPUT_TYPE_GAMEPAD
};
//-----------------------

//--Forward Declaration--
class CPlayer;
class CActionToInput;
//-----------------------

class CInput
{
public:
    CInput(INPUT_TYPE type, CActionToInput* l_pActionInput): m_eInputType(type),
                                                             m_pActionInput(l_pActionInput)
                                                             {}
	virtual ~CInput() {}

	void			SetActionToInput		(CActionToInput * l_pActionToInput) {m_pActionInput = l_pActionToInput;}
	INPUT_TYPE		GetType					() {return m_eInputType;}
	CActionToInput* GetActionToInput		() {return m_pActionInput;}


	virtual Vect2f	ProcessNewInput	(Vect2f & l_vCurrentPosition, std::string & l_sActionName) = 0;

protected:
	INPUT_TYPE		 m_eInputType;
	CActionToInput*	 m_pActionInput;
};

#endif //INC_INPUT_H_